Amazon ComprehendのTopic modelingを使ってみる #reinvent
はじめに
今日発表されたAmazon Comprehend。速報記事は以下です。
- 【速報】AWSの自然言語処理サービス、Amazon Comprehendが発表されました! #reinvent
- Amazon ComprehendのAPI explorerを使ってみる #reinvent
今回はTopic modelingを使ってみました。
やってみた
S3でインプット用とアウトプット用のバケットを作っておきます。両方ともComprehendと同じリージョンで作って下さい。またインプット用のバケットには英文のテキストファイルをアップロードしておきます。
[Topic modeling]画面で[Create]ボタンをクリックします。
Create topic modeling job画面になります。Select input dataでは[Mydata]を選択します。[S3 data location]はインプットとなるバケットを指定します。Input formatは[One document per file]か[One document per line]を選択します。今回はper fileとしました。
[Number of topics]と[Job Name]は適当に設定します。
Select output locationのS3 data locationはアウトプット用のバケットを指定します。またSelect an IAM roleでは[Create a new IAM role]を選択し、[Name suffix]は適当に設定します。[Create job]をクリックします。
Jobが実行され、完了するとStatusがCompletedになります。
Jobをクリックすると、アウトプット用のバケットにどこに保存されたのかが分かります。ファイル名は「output.tar.gz」です。
「output.tar.gz」をダウンロードして解凍すると、以下の2ファイルがあります。
topic-term.csvは、トピック毎に出現する単語をまとめたものです。
topic,term,weight 000,condition,0.00346024 000,bank,0.00346024 000,spot,0.00346024 000,dark,0.00346023 000,cripple,0.00346023 000,wallow,0.00346024 000,vast,0.00346024 000,corner,0.00346023 000,alleghenies,0.00346023 (--snip--)
doc-topic.csvは、どのファイルがどのトピックに紐付けられているかを示します。今回は1つしかファイルを配置しなかったので、トピック000も001も同じファイルとなっています。
docname,topic,proportion ihaveadream.txt,000,0.55908 ihaveadream.txt,001,0.44092
こんな感じで、S3バケットに配置されたファイルをジョブ実行によって分析することが出来ます。あとはLambda + Cloudwatch eventsあたりでスケジューリングすれば、定期的な分析が可能です。
さいごに
TwitterのようなSNSのタイムラインを抜いて分析して結果をDBに格納して表示すると、流行りのキーワードを簡単に把握することが出来ます。面白そうですね。